REM Play Level Pile of its own good.

REM********lore*****************

QUICK_OBJECTIVE(1,"Greetings, Keeper! A pitiful fortress manned by feeble heroes stands in the way of your dominion over this land. Crush them all to dust, so that no one may stop you from ruling with an iron fist.",2)
QUICK_INFORMATION(2,"You only have one treasury, and you can't build more. This dungeon contains no gems, so you must rely solely on your own resources.")
QUICK_INFORMATION(11,"Note that you have 4 dynamite traps, which you can use to destroy enemy walls. You can't craft new ones, so think carefully about where to place them (if you see that you have no dynamite, it means you're using a version earlier than 1.3.0).")

IF_ACTION_POINT(6,PLAYER0)
	QUICK_INFORMATION(3,"Oh. Unfortunately, I have bad news for you. On the way to the fortress, you will encounter two rival Keepers, and you won't be able to proceed until they are destroyed. But there is good news, too! These Keepers' strongholds have fallen into disrepair, and you might just find a way to destroy them.")
ENDIF

REM ******* Basic settings *******

SET_GENERATE_SPEED(500)

MAX_CREATURES(PLAYER0,14)

COMPUTER_PLAYER(PLAYER2,0)
COMPUTER_PLAYER(PLAYER3,0)

ALLY_PLAYERS(PLAYER2,PLAYER_GOOD)
ALLY_PLAYERS(PLAYER3,PLAYER_GOOD)

START_MONEY(PLAYER0,0)
START_MONEY(PLAYER2,0)
START_MONEY(PLAYER3,0)

ADD_CREATURE_TO_POOL(FLY,30)
ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(SORCEROR,5)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(DEMONSPAWN,10)


REM ********** Available creatures **********

CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)

REM ********** Available rooms **********

ROOM_AVAILABLE(PLAYER0,TREASURE,0,0)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,0)
ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)
ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)

ROOM_AVAILABLE(PLAYER2,TREASURE,0,0)
ROOM_AVAILABLE(PLAYER2,LAIR,0,0)
ROOM_AVAILABLE(PLAYER2,GARDEN,0,0)
ROOM_AVAILABLE(PLAYER2,RESEARCH,0,0)

ROOM_AVAILABLE(PLAYER3,TREASURE,0,0)
ROOM_AVAILABLE(PLAYER3,LAIR,0,0)
ROOM_AVAILABLE(PLAYER3,GARDEN,0,0)
ROOM_AVAILABLE(PLAYER3,RESEARCH,0,0)

DOOR_AVAILABLE(PLAYER0,WOOD,1,0)
DOOR_AVAILABLE(PLAYER0,BRACED,1,0)

TRAP_AVAILABLE(PLAYER0,ALARM,1,0)
TRAP_AVAILABLE(PLAYER0,TNT,0,4)

REM ********** Available spells **********

MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_OBEY,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,0)

MAGIC_AVAILABLE(PLAYER2,POWER_HAND,0,0)
MAGIC_AVAILABLE(PLAYER2,POWER_SLAP,0,0)
MAGIC_AVAILABLE(PLAYER2,POWER_IMP,0,0)

MAGIC_AVAILABLE(PLAYER3,POWER_HAND,0,0)
MAGIC_AVAILABLE(PLAYER3,POWER_SLAP,0,0)
MAGIC_AVAILABLE(PLAYER3,POWER_IMP,0,0)

REM ********** Game settings **********

REM ********** Triggers & End game **********

CREATE_PARTY(ONE)
    ADD_TO_PARTY(ONE,THIEF,3,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ONE,DWARFA,4,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ONE,BARBARIAN,4,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ONE,ARCHER,3,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ONE,THIEF,3,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ONE,THIEF,3,0,ATTACK_ENEMIES,0)

CREATE_PARTY(TWO)
    ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,MONK,4,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,AVATAR,3,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,MONK,4,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(TWO,BARBARIAN,6,0,ATTACK_ENEMIES,0)

CREATE_PARTY(GREEN_REVENGE)
	ADD_TO_PARTY(GREEN_REVENGE,BILE_DEMON,5,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(GREEN_REVENGE,SORCEROR,6,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(GREEN_REVENGE,ORC,5,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(GREEN_REVENGE,DEMONSPAWN,5,0,ATTACK_ENEMIES,0)

CREATE_PARTY(YELLOW_REVENGE)
	ADD_TO_PARTY(YELLOW_REVENGE,WIZARD,5,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(YELLOW_REVENGE,GIANT,5,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(YELLOW_REVENGE,BARBARIAN,5,0,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(YELLOW_REVENGE,MONK,5,0,ATTACK_ENEMIES,0)

IF_ACTION_POINT(9,PLAYER0)
	QUICK_INFORMATION(13,"At times, Dungeon Keeper is so much like Minecraft...")
ENDIF

IF_ACTION_POINT(2,PLAYER0)
	SET_FLAG(PLAYER_GOOD,FLAG0,1)
	ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,1,4,2,100)
	QUICK_INFORMATION(4,"Watch out! It looks like reserve troops are about to come out...")
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,3,DUNGEON_HEART,0,1,0)
	ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,4,DUNGEON_HEART,0,1,0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,7,2)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,8,2)
ENDIF

SET_TIMER(PLAYER2,TIMER0)
SET_TIMER(PLAYER2,TIMER1)
SET_TIMER(PLAYER2,TIMER2)
SET_TIMER(PLAYER2,TIMER3)
SET_TIMER(PLAYER2,TIMER4)
SET_TIMER(PLAYER2,TIMER5)
SET_TIMER(PLAYER3,TIMER0)
SET_TIMER(PLAYER3,TIMER1)
SET_TIMER(PLAYER3,TIMER2)
SET_TIMER(PLAYER3,TIMER3)
SET_TIMER(PLAYER3,TIMER4)
SET_TIMER(PLAYER3,TIMER5)

IF(PLAYER2,TIMER0 >= 350)
    IF(PLAYER2,TOTAL_CREATURES < 25)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,TROLL,-1,2,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER0)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER2,TIMER1 >= 475)
    IF(PLAYER2,TOTAL_CREATURES < 25)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,BUG,-1,1,5,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER1)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER2,TIMER2 >= 550)
    IF(PLAYER2,TOTAL_CREATURES < 25)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,ORC,-1,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER2)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER2,TIMER3 >= 650)
    IF(PLAYER2,TOTAL_CREATURES < 25)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,GHOST,5,1,5,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER3)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER2,TIMER4 >= 750)
    IF(PLAYER2,TOTAL_CREATURES < 25)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,HELL_HOUND,-1,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER4)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER2,TIMER5 >= 1100)
    IF(PLAYER2,TOTAL_CREATURES < 26)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER2,DRAGON,-1,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER2,TIMER5)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER0 >= 350)
    IF(PLAYER3,TOTAL_CREATURES < 25)
        IF(PLAYER3,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,THIEF,-2,2,5,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER0)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER1 >= 475)
    IF(PLAYER3,TOTAL_CREATURES < 25)
        IF(PLAYER3,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,ARCHER,-2,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER1)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER2 >= 550)
    IF(PLAYER3,TOTAL_CREATURES < 25)
        IF(PLAYER3,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,BARBARIAN,-2,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER2)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER3 >= 650)
    IF(PLAYER3,TOTAL_CREATURES < 25)
        IF(PLAYER3,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,WIZARD,-2,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER3)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER4 >= 750)
    IF(PLAYER3,TOTAL_CREATURES < 25)
        IF(PLAYER3,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,GIANT,-2,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER4)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER3,TIMER5 >= 1400)
    IF(PLAYER2,TOTAL_CREATURES < 26)
        IF(PLAYER2,TOTAL_CREATURES >= 1)
            NEXT_COMMAND_REUSABLE
            ADD_CREATURE_TO_LEVEL(PLAYER3,SAMURAI,-2,1,3,0)
            NEXT_COMMAND_REUSABLE
            SET_TIMER(PLAYER3,TIMER5)
        ENDIF
    ENDIF
ENDIF

IF(PLAYER_GOOD,KNIGHT == 0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,TENTACLE,-3,3,5,0)
ENDIF

IF(PLAYER_GOOD,BARBARIAN == 0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,GREEN_REVENGE,-3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,YELLOW_REVENGE,-3,1)
    IF(PLAYER_GOOD,AVATAR == 0)
		QUICK_OBJECTIVE(5,"Congratulations! I wouldn't be wrong to say that by destroying that insolent avatar, you have attained heights of power beyond your wildest dreams.")
        WIN_GAME
    ENDIF
ENDIF

IF(PLAYER2,TOTAL_CREATURES == 0)
	ADD_PARTY_TO_LEVEL(PLAYER2,GREEN_REVENGE,PLAYER2,2)
	QUICK_INFORMATION(9,"Be careful! It seems the green Keeper is out for revenge.")
ENDIF

IF(PLAYER3,TOTAL_CREATURES == 0)
	ADD_PARTY_TO_LEVEL(PLAYER3,YELLOW_REVENGE,PLAYER3,2)
	QUICK_INFORMATION(10,"It looks like the yellow Keeper is preparing a counterattack.")
ENDIF
